"use strict";
var a = 'hello word';
console.log(a);
// 类型注解、类型注释、类型签名/类型约束
// 语法  变量：类型
// 在ts文件中可以直接编写JS代码，虽然可能类型检测不通过，但是仍然可以成功编译类型
var a1 = '你好';
a1 = '不好';
var a2 = 20;
a2 = 10;
var a3 = true;
var a4 = undefined;
var a5 = 123n;
var a6 = null;
var a7 = Symbol('hello');
a7 = Symbol('word');
// 数组array 
var list1 = [1, 2, 3, 4];
var list2 = ['js', 'css', 'html'];
var b = '你好';
b = 20;
b = [];
b = {};
b = true;
b = null;
b = undefined;
// 类型推断,ts编辑器会根据变量的初始值的类型赋值给该变量
var c = 'hello world';
// c = 
// 函数
function add(a, b) {
    return a + b;
}
add(1, 2);
// promise类型
// async function fetchData(url:data):Promisr<any> {
//     return await axios.get(url,data)
// }
// 没有返回值的函数需要给返回值类型为void
function fn(msg) {
    console.log('你好');
}
// 对象类型
var user = {
    name: '张三',
    age: 20,
    // sex: '男'
};
var user2 = {
    name: '张三',
    age: 20,
    sex: '男',
    hobby: ['吃', '喝', '睡']
};
var user3 = {
    name: '张三',
    age: 20,
    sex: '男',
    hobby: ['吃', '喝', '睡'],
    address: [
        {
            id: '1001',
            name: '湖北省'
        },
        {
            id: '1101',
            name: '武汉市'
        },
    ]
};
var user3 = {
    name: '张三',
    age: 20,
    sex: '男',
    hobby: ['吃', '喝', '睡'],
    address: [
        {
            id: '1001',
            name: '湖北省'
        },
        {
            id: '1101',
            name: '武汉市'
        },
    ]
};
// 类型别名和接口的区别
// 类型别名不能合并，接口可以
// 断言:类型断言、非空断言
// 类型断言：断定某个数据一定是某个类型（有值）    as
// 非空断言：断定某个数据一定是有值的    ！
// 使用场景：对于部分ts编译器无法正确的推断数据类型的时候或者推断类型错误的时候使用
const app = document.getElementById('app'); //断定获取的DOM对象一定是HTMLElement类型
console.log(app.innerHTML);
const app1 = document.getElementById('app').innerHTML; //非空断言：断定某个数据一定是有值的
console.log(app1);
var Directon;
(function (Directon) {
    Directon[Directon["EAST"] = 0] = "EAST";
    Directon[Directon["SOUTH"] = 1] = "SOUTH";
    Directon[Directon["WEST"] = 2] = "WEST";
    Directon[Directon["NORTH"] = 3] = "NORTH";
})(Directon || (Directon = {}));
console.log(Directon);
var east = Directon[0];
console.log(east);
var Sex;
(function (Sex) {
    Sex["MAN"] = "\u7537";
    Sex["WOMAN"] = "\u5973";
})(Sex || (Sex = {}));
console.log(Sex);
console.log(Sex['MAN']);
